【GitKraken】 Could not find a compatible repository

情况说明

有一天我用 GitKragen 打开我常用的仓库 Note,但发现有这样的报错:

image-20200501230732304

之后用 GitKragen 始终打不开仓库 Notes 仓库。

本文分析了可能出现此情况的所有可能,提出解决这个问题的方法,以及使用 GitKragen 的经验教训。

原因分析

在 https://support.gitkraken.com/faq/ 有专门这样一条:

翻译解释如下:

  1. 当前的仓库被其他工具占用了,先把这些工具解除对仓库的占用,再尝试用 GitKragen 打开。
  2. 尝试将仓库未解决的更改 stash ,或者提交,或者切换分支,再尝试用 GitKragen 打开。
  3. 坑你是某个文件的完整路径过长,GitKragen 支持的最大的文件路径是 260 个字符。

尝试与解决

根据我当前的情况,第一个情况不可能,开始尝试第二个,同时在处理第二个的过程中注意第三个。
因为很可能是最近添加了路径过长的文件导致,在解决新的更改的时候可能发现那个文件。

最开始并没有发现可特别疑的文件,顺利地把所有的文件提交了上去。之后发现 GitKragen 还是打不开仓库(排除了第二种情况)。

尝试对最近看起来文件路径还是蛮长的文件进行了路径长度统计,但基本都不超过 150。
所以实在太奇怪了……(第三种情况也要排除了?)😵

然而,在观察 Git History 的时候发现了神奇的事情:⭐️发现之前提交了这个文件名巨长无比的文件??
赶紧测试了一下:

逼近 260,有很大可能,然后发现这个文件原来的名称是“常用的输入字符的上标、下标、脚标.txt”
顿时懂了,这个含中文字符的文件名在 git 里面中文字符被 \xxx 来编码代替,而所谓的“文件路径是 260 个字符”是没有对 \xxx 解码的情况下测定的长度。
更改文件名,之后,GitKragen 果然恢复正常了…… 😄

经验教训

  1. 了解可能导致 GitKragen 打不开仓库的情况。
  2. 在 Git 仓库里面
    1. 尽量不要让文件的层次太深(本案例没有太大这样的问题)
    2. 文件命名在没有特殊需求的情况下使用英文字符(中文字符对 GitKragen 的字符长度规则里是 ×4 的,容易超过它的上限 260)

希望本文对也喜爱 GitKraken 的同仁能有点启示。

------ The end ------

本文标题:【GitKraken】 Could not find a compatible repository

文章作者:Andy Wu

发布时间:2020年05月01日 - 00:05

最后更新:2020年12月18日 - 21:12

原始链接:https://zer0-nu1l.github.io/2020/05/01/GitKraken%20Error/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。